Emu(lator) + (Ar)duino

Processing と Arduino の違いについて


Emuduino(Processing)で作成したプログラムを実機であるArduinoで動作させるには,注意が必要です。一見,両者のプログラムは,よく似ています。しかし,そもそもEmuduino(Processing)は,Javaがベース,ArduinoはC言語がベースなので,その仕様の違いがバグの原因となります。
Emuduinoの開発中に気になった点や注意すべき内容をここにまとめました。

型の違いについて

  • Processingには,unsigned型が存在しない。
  • Processingには,byte, word型が存在しない。
  • Arduinoのcharは8bit, Processingのcharは16bit
  • Arduinoのintは16bit, Processingのintは32bit
Arduino Processing
名前 値の範囲 名前 値の範囲
boolean 真trueか偽 false 同等 boolean 真trueか偽 false
char -128 .. 127 相違あり char char is two bytes (16 bits)
unsigned char 0 .. 255 該当なし
byte 0 .. 255 該当なし
int -32768 .. 32767 相違あり int -2,147,483,648 .. 2,147,483,647
unsigned int 0 .. 65535 該当なし
word 0 .. 65535 該当なし
long -2,147,483,648 .. 2,147,483,647 同等 long -2,147,483,648 .. 2,147,483,647
unsigned long 0 .. 4294967295 該当なし
float -3.4028235E+38 .. 3.4028235E+38 同等 float -3.40282347E+38 .. 3.40282347E+38
double -3.4028235E+38 .. 3.4028235E+38 同等 double -3.40282347E+38 .. 3.40282347E+38
該当なし String 日本語を含むあらゆる文字

構文上の注意点

Arduinoで使用される#define文は,Processingには存在しない。int 型の定数として宣言すること。

配列の宣言方法の違い

  • Processing
    int[] data = new int3;
  • Arduino
    int data3;

配列の初期化方法の違い

Arduino Processing
int array1[] = { 1, 2, 3 }; OK OK
int[] array2 = { 1, 2, 3 }; NG OK

戻る